/*
不再用到的内存，没有及时释放，就叫做内存泄漏（memory leak）]

JS的内存生命周期：

1、分配你所需要的内存

2、使用分配到的内存（读、写）

3、不需要时将其释放、归还

var a = 20; // 在内存中给数值变量分配空间

alert(a + 100); // 使用内存

a = null ; // 使用完毕

js垃圾回收机制：

1、自动垃圾回收机制就是找出那些不再继续使用的值，然后释放其占用的内存空间。垃圾回收器每隔固定的时间段就执行一次释放操作。

2、js最常用的是通过标记清除的算法来找到哪些对象是不再继续使用的，上面例子中的a = null 其实就是做了一个释放引用的操作，让a原本对应的值失去引用，脱离执行环境，这个值会在下一次垃圾收集器执行操作时被找到并释放。因此，在适当的时候解除引用，是为页面获的更好性能的一个重要方式。

3、在局部作用域中，当函数执行完毕的时候，局部变量也就没有存在的必要了，因此垃圾回收器很容易做出判断并回收。

4、但是全局变量什么时候需要自动释放内存空间则很难判断，因此在开发中，需要尽量避免使用全局变量。


泄漏点：
1.DOM/BOM 对象泄漏(比如DOM中的addEventLisner 函数及派生的事件监听)
2.script 中存在对DOM/BOM 对象的引用导致
3.Javascript 对象泄漏
4.通常由闭包导致，比如事件处理回调，导致DOM对象和脚本中对象双向引用，这个时常见的泄漏原因



 */



//js通常内存泄漏的几种情况的介绍
let n = 0
function foo2(){
    n++
    console.log('foo2 n:',n)
    if(n>5){
        return null
    }
   let  timer = setTimeout(foo2,100) // 每次执行都会销毁
}
 foo2()





